package com.kaifamiao.io.d0923;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Arrays;

public class ReflectDemo1 {

    public static void main(String[] args) {

        // 获取 Class 对象
//        Class cla =  obj.getClass();
//        Class cla1 = Cloneable.class;
        try {
            Class cla = Class.forName("com.kaifamiao.io.d0923.Student");

            /*
                getMethods() 获取所有 public 的方法 （继承的也算）
                getDeclaredMethods() 获取所有 声明 的方法
                getMethod(methodName, parameterTypes)
             */
//            Method[] methods = cla.getMethods();
//            Method[] declaredMethods = cla.getDeclaredMethods();
//
//            Arrays.stream(methods).forEach(e -> System.out.println(e));
//            System.out.println("===");
//            Arrays.stream(declaredMethods).forEach(e -> System.out.println(e));

            System.out.println(cla.getMethod("publicMethod"));

            System.out.println(cla.getMethod("wait", long.class, int.class));

            System.out.println(cla.getDeclaredMethod("privateMethod"));

//            System.out.println(cla.getDeclaredMethod("wait", long.class, int.class));  // NoSearchMethodException

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
